package src.main.backinfo;

import lombok.Data;

/**
 * 游戏角色类（属于发起人角色）
 * @author liayun
 * @create 2021-09-18 19:19
 */
@Data
public class GameRole {

    private int vit; // 生命力
    private int atk; // 攻击力
    private int def; // 防御力

    // 初始化内部状态
    public void initState() {
        this.vit = 100;
        this.atk = 100;
        this.def = 100;
    }

    // 战斗
    public void fight() {
        this.vit = 0;
        this.atk = 0;
        this.def = 0;
    }

    // 保存游戏角色的内部状态
    public RoleStateMemento saveState() {
        // 这儿我们只须创建一个备忘录对象，将游戏角色的内部状态进行一个存储即可
        return new RoleStateMemento(vit, atk, def);
    }

    // 恢复游戏角色状态
    public void recoverState(RoleStateMemento roleStateMemento) {
        // 将备忘录对象中存储的状态赋值给当前对象的成员
        this.vit = roleStateMemento.getVit();
        this.atk = roleStateMemento.getAtk();
        this.def = roleStateMemento.getDef();
    }

    // 为了等会让大家看到效果，这里我们再提供一个方法，该方法就是用于展示游戏角色内部状态的
    public void stateDisplay() {
        System.out.println("角色生命力：" + vit);
        System.out.println("角色攻击力：" + atk);
        System.out.println("角色防御力：" + def);
    }

}
